﻿using UnityEngine.UIElements;

namespace GameFramework.UI
{

    public interface IView
    {
        /// <summary>
        ///  在显示前的处理，比如给element元素绑定事件等
        /// 每次show方法被调用都会执行
        /// </summary>
        void beforeShow();
        /// <summary>
        /// 视图显示
        /// </summary>
        void show();

        /// <summary>
        /// 在视图显示后执行的逻辑，比如给element元素添加动画的类名，通知其他事件等
        /// 每次show方法被调用都会执行
        /// </summary>
        void afterShow();
        /// <summary>
        /// 视图暂停
        /// 当其他视图界面模态覆盖此视图时，此视图会暂停，比如点击界面的按钮后弹出一个模态界面，模态界面会盖在之前界面之上
        /// 和reuse一般为一对操作，pause禁用一些操作，而reuse则恢复
        /// </summary>
        void pause();
        /// <summary>
        /// 视图从暂停到正常，模态界面关闭时，需要唤醒被覆盖的界面，执行show方法时也会调用此方法，
        /// 避免在pause后直接关闭界面时，没有使用reuse恢复，则在show后一些操作还是被禁用的
        /// </summary>
        void reUse();
        
        /// <summary>
        /// 视图隐藏前的逻辑
        /// </summary>
        void beforeHide();
        /// <summary>
        /// 视图隐藏，界面被关闭时会调用此方法，来隐藏界面的显示
        /// </summary>
        void hide();
        /// <summary>
        /// 视图隐藏后的逻辑
        /// </summary>
        void afterHide();
    }
}